package string;
/*
测试重写Object的toString方法与equals方法
 */

import java.awt.*;

public class Object {
    private int x;
    private int y;

    public Object(int x, int y) {
        this.x = x;
        this.y = y;
    }

    public int getX() {
        return x;
    }

    public void setX(int x) {
        this.x = x;
    }

    public int getY() {
        return y;
    }

    public void setY(int y) {
        this.y = y;
    }

    @Override
    public String toString() {
        return "Object{" +
                "x=" + x +
                ", y=" + y +
                '}';
    }

    public static void main(String[] args) {
        Point p = new Point(1,2);

        /*
        String toString(0方法时Object定义的方法
        该方法的作用时将当前对象转换为一个字符串,Object的默认实现中该方法的返回的
        这个对象的地址信息，格式为：类名@地址
         */

        String str = p.toString();
        System.out.println(str);
        //向控制台输出p对象

        /*
        System.put.println(Object o)
        向控制台输出一个对象时，该方法会输出该对象toString方法返回的字符串
         */
        System.out.println(p);

        /*
        在进行字符串连接时，会将非字符串的对象内容转换为字符串
        此时会调用起toString方法将其转换为字符串
         */
        String line = "对象内容:" + p;
        System.out.println(line);

        /*
        Object定义的另一个常被子类重写的方法:equals
        该方法的作用时判断两个桶同类型的实例之间内容是否相同
         */
        Point p2 = new Point(1,2);
        System.out.println(p == p2);//false


        /*
        equals方法并不关心两个对象是否为同一个对象，而是应当关心两个对象内容是否相同
        Object定义的该方法内部使用使用“==”实现，因此我们实际应用的时候应当重写该方法
        否则没有实际意义
         */
        System.out.println(p.equals(p2));//true

    }
}
